package es.exitae.ejerciciofinal.servicios;

import android.location.Location;
import android.location.LocationManager;

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;

import es.exitae.ejerciciofinal.utils.Traza;
import es.exitae.ejerciciofinal.utils.enums.Metodo;

public class ServicioGeolocalizacion
{
	private LocationManager locationManaget;
	private LatLng miPosicion;
	
	private float zoon;
	
	public ServicioGeolocalizacion(LocationManager locationManaget)
	{
		this.locationManaget = locationManaget;
		zoon = 0;
		miPosicion = null;
	}
	
	public void actualizarMapa(GoogleMap mapa)
	{
		Traza.d(Metodo.ENTRADA);
		if(miPosicion != null)
		{
			mapa.animateCamera(obtenerCameraUpdate(zoon, miPosicion));
		}
		Traza.d(Metodo.SALIDA);
	}
	
	public void cargarUltimaPosicionConocida()
	{
		Traza.d(Metodo.ENTRADA);
		
		Location loc = locationManaget.getLastKnownLocation(LocationManager.GPS_PROVIDER);
		if(loc != null)
		{
			miPosicion = new LatLng(loc.getLatitude(), loc.getLongitude());
		}
		
		Traza.d(Metodo.SALIDA);
	}
	
	public LatLng getPosicion()
	{
		return miPosicion;
	}
	
	public CameraUpdate obtenerCameraUpdate(float zoom, LatLng miPosicion)
	{
		Traza.d(Metodo.ENTRADA);
		CameraPosition camPos = new CameraPosition.Builder().target(miPosicion).zoom(zoom).build();
		Traza.d(Metodo.SALIDA);
		return CameraUpdateFactory.newCameraPosition(camPos);
	}
	
	public void setPosicion(LatLng miPosicion)
	{
		this.miPosicion = miPosicion;
	}
	
	public void setPosicion(Location loc)
	{
		miPosicion = new LatLng(loc.getLatitude(), loc.getLongitude());
	}
	
	public void setZoon(float zoonInicial)
	{
		zoon = zoonInicial;
	}
	
}
